package com.event.management.frontend.service;

import com.event.management.frontend.dto.UserTicketDTO;

import java.util.List;

/**
 * 用户电子票服务接口
 */
public interface UserTicketService {

    /**
     * 获取用户所有电子票
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 电子票列表
     */
    List<UserTicketDTO> getUserTickets(Long userId, int page, int size);
    
    /**
     * 获取用户电子票总数
     * @param userId 用户ID
     * @return 电子票总数
     */
    long countUserTickets(Long userId);
    
    /**
     * 通过订单ID获取电子票列表
     * @param orderId 订单ID
     * @return 电子票列表 
     */
    List<UserTicketDTO> getTicketsByOrderId(Long orderId);
    
    /**
     * 获取电子票详情
     * @param userId 用户ID
     * @param ticketId 电子票ID
     * @return 电子票详情
     */
    UserTicketDTO getTicketDetail(Long userId, Long ticketId);
    
    /**
     * 通过票码获取电子票
     * @param ticketCode 票码
     * @return 电子票详情
     */
    UserTicketDTO getTicketByCode(String ticketCode);
    
    /**
     * 核销电子票
     * @param ticketCode 票码
     * @return 是否成功
     */
    boolean checkTicket(String ticketCode);
    
    /**
     * 用户自行标记电子票为已使用
     * @param userId 用户ID
     * @param ticketId 电子票ID
     * @return 是否成功
     */
    boolean markTicketAsUsed(Long userId, Long ticketId);
} 